package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.entity.MemberOrderCommentDO;
import com.ssy.lingxi.member.merchant.model.constant.MemberTradeTypeEnum;
import com.ssy.lingxi.member.merchant.model.vo.comment.request.*;
import com.ssy.lingxi.member.merchant.model.vo.comment.response.*;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.request.CommonIdVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.response.MemberDetailCreditCommentSummaryVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.response.MemberDetailCreditTradeHistoryVO;

/**
 * 会员评价服务接口
 * @author 姚梓聪
 * @version 2.0.0
 * @date 2020-10-23
 */
public interface IMemberCommentService {

    /**
     * 交易能力 - 会员评价管理 - 订单商品评价详情
     *
     * @param loginUser 登录用户信息
     * @param memberTradeTypeEnum 评价方角色枚举 1-供应会员，2-采购会员
     * @param commonIdVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberOrderCommentDetailVO> getMemberOrderCommentDetail(UserLoginCacheDTO loginUser, MemberTradeTypeEnum memberTradeTypeEnum, CommonIdVO commonIdVO);

    /**
     * 交易能力 - 会员评价管理 - 发表评价
     *
     * @param loginUser 登录用户信息
     * @param memberTradeTypeEnum 评价方角色枚举 1-供应会员，2-采购会员
     * @param commentSubmitVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> submitMemberTradeComment(UserLoginCacheDTO loginUser, MemberTradeTypeEnum memberTradeTypeEnum, MemberTradeCommentSubmitVO commentSubmitVO);

    /**
     * 系统定时自动评价
     *
     * @param memberTradeTypeEnum 评价方角色枚举 1-供应会员，2-采购会员
     * @param memberOrderCommentDO 被评价的订单
     * @param commentSubmitVO 订单的评价
     * @return 查询结果
     */
    void submitAutoMemberTradeComment(MemberTradeTypeEnum memberTradeTypeEnum, MemberOrderCommentDO memberOrderCommentDO, MemberTradeCommentSubmitVO commentSubmitVO);

    /**
     * 交易能力 - 会员评价管理 - 收到评价分页列表
     * 如果采购会员查看, 评价方角色是供应会员
     * 如果供应会员查看, 评价方角色是采购会员
     *
     * @param loginUser 登录用户信息
     * @param memberTradeTypeEnum 评价方角色枚举 1-供应会员，2-采购会员
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberReceiveTradeCommentPageVO>> pageMemberReceiveTradeCommentHistory(UserLoginCacheDTO loginUser, MemberTradeTypeEnum memberTradeTypeEnum, MemberReceiveTradeCommentQueryVO pageVO);

    /**
     * 交易能力 - 会员评价管理 - 发出评价分页列表
     * 如果采购会员查看, 评价方角色是采购会员
     * 如果供应会员查看, 评价方角色是供应会员
     *
     * @param loginUser 登录用户信息
     * @param memberTradeTypeEnum 评价方角色枚举 1-供应会员，2-采购会员
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberSendTradeCommentPageVO>> pageMemberSendTradeCommentHistory(UserLoginCacheDTO loginUser, MemberTradeTypeEnum memberTradeTypeEnum, MemberSendTradeCommentQueryVO pageVO);

    /**
     * 交易能力 - 采购会员评价管理 - 修改评价详情
     * @param tradeCommentSubmitVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> updateMemberTradeCommentHistory(MemberTradeCommentUpdateDetail tradeCommentSubmitVO);

    /**
     * 交易能力 - 评价管理 - 评价详情
     *
     * @param loginUser 登录用户信息
     * @param tradeCommentIdVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberTradeCommentDetailVO> getMemberTradeCommentHistory(UserLoginCacheDTO loginUser, MemberTradeCommentIdVO tradeCommentIdVO);

    /**
     * 商城能力 - 店铺渠道商城 - 现货商品详情 - 商户总体满意度
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberDetailCreditCommentSummaryVO> pageOrderProductTradeCommentSummary(OrderProductTradeCommentVO pageVO);

    /**
     * 商城能力 - 店铺渠道商城 - 现货商品详情 - 交易评价分页列表(只显示采购商的评价)
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<ProductOrderTradeCommentPageVO>> pageOrderProductTradeCommentHistory(OrderProductTradeCommentQueryVO pageVO);

    /**
     * 交易能力 - 会员评价管理 - 交易评价汇总
     * 如果采购会员查看, 评价方角色是供应会员
     * 如果供应会员查看, 评价方角色是采购会员
     *
     * @param loginUser 登录用户信息
     * @param memberTradeTypeEnum 评价方角色枚举 1-供应会员，2-采购会员
     * @return 查询结果
     */
    Wrapper<MemberDetailCreditCommentSummaryVO> getSubMemberTradeCommentSummary(UserLoginCacheDTO loginUser, MemberTradeTypeEnum memberTradeTypeEnum);

    /**
     * 交易能力 - 会员评价管理 - 分页查询交易评论历史记录
     * 如果采购会员查看, 评价方角色是供应会员
     * 如果供应会员查看, 评价方角色是采购会员
     *
     * @param loginUser 登录用户信息
     * @param memberTradeTypeEnum 评价方角色枚举 1-供应会员，2-采购会员
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberDetailCreditTradeHistoryVO>> pageSubMemberTradeCommentHistory(UserLoginCacheDTO loginUser, MemberTradeTypeEnum memberTradeTypeEnum, MemberHistoryPageVO pageVO);

    /**
     * 交易能力-供应会员评价管理-收到评价-解释回复
     * @param loginUser 登录用户信息
     * @param memberTradeCommentSubmitVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> replyReceiveMemberTradeCommentHistory(UserLoginCacheDTO loginUser, MemberTradeReceiveCommentReplyVO memberTradeCommentSubmitVO);

    /**
     * 交易能力-供应会员评价管理-收到评价-修改是否显示商品评价
     * @param updateVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> updateSupplyReceiveShowEvaluation(MemberTradeCommentUpdateStatusVO updateVO);
}
